unit URelNF;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, QuickRpt, QRCtrls;

type
  TFRelNF = class(TForm)
    QRNF: TQuickRep;
    DetailBand1: TQRBand;
    QRLabel1: TQRLabel;
  private
    { Private declarations }
  public
    { Public declarations }

    procedure CriaCampo(Linha, Coluna, Tamanho : integer; Mascara, Tipo, Alinhamento : string; Conteudo : Variant);
  end;

var
  FRelNF: TFRelNF;
Const
  L = 15;
  C = 5;
implementation

{$R *.dfm}

{ TFRelNF }

procedure TFRelNF.CriaCampo(Linha, Coluna, Tamanho: integer; Mascara, Tipo,
  Alinhamento: string; Conteudo: Variant);
var
  QRL   : TQRLabel;
  texto : string;
begin
  QRL := TQRLabel.Create(DetailBand1);
  QRL.Parent := DetailBand1;
  QRL.AutoSize := False;
  QRL.Left     := Coluna  * C;
  QRL.Top      := Linha   * L;
  QRL.Width    := Tamanho * C;

  if UpperCase(Alinhamento) = 'L' then // alinhamento a esquerda
    QRL.Alignment := taLeftJustify
  else if UpperCase(Alinhamento) = 'C' then // alinhamento centralizado
    QRL.Alignment := taCenter
  else
    QRL.Alignment := taRightJustify;  // Alinhamento a Direita

  if UpperCase(Tipo) = 'I' then // Integer
    texto := VarToStr(Conteudo)
  else if UpperCase(Tipo) = 'V' then // valor real
    texto := FormatFloat(Mascara,Conteudo)
  else if UpperCase(Tipo) = 'D' then // data
    texto := FormatDateTime(Mascara,Conteudo)
  else
    texto := Conteudo;  // Texto

  if Length(texto) > Tamanho then
  begin
    if Tipo <> 'T' then
      QRL.Caption := Copy(texto,1,40)
    else begin
      CriaCampo(Linha + 1,Coluna,Tamanho,Mascara,Tipo,Alinhamento,Copy(texto,41,Length(texto)));
      QRL.Caption := Copy(texto,1,40);
    end;
  end else
    QRL.Caption := texto;
end;

end.
